package singleton;

/**
 * 单例模式
 * 单例模式（Singleton Pattern）是 Java 中最简单的设计模式之一。(所以设计模式练习就从单例模式开始，哈哈)
 * 这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。
 *
 * 这种模式涉及到一个单一的类，该类负责创建自己的对象，同时确保只有单个对象被创建。
 * 这个类提供了一种访问其唯一的对象的方式，可以直接访问，不需要实例化该类的对象。
 *
 * 注意：
 * 1、单例类只能有一个实例。
 * 2、单例类必须自己创建自己的唯一实例。
 * 3、单例类必须给所有其他对象提供这一实例。
 */
public class SingletonMain {

    /**
     * 介绍
     * 产生意图：保证一个类仅有一个实例，并提供一个访问它的全局访问点。
     * 主要解决：一个全局使用的类频繁地创建与销毁。
     * 何时使用：控制实例数目，节省系统资源的时候。
     * 如何解决：判断系统是否已经有这个单例，如果有则返回，如果没有则创建。
     * 关键代码：构造方法必须进行私有化。
     * 应用实例：创建全局唯一的id，日志应用，数据库连接池，配置文件读取，多线程的线程池。。。
     * 注意事项：
     *        注意是单线程情况下使用，还是多线程情况下使用，没有锁的话可能会创建多个实例
     * 缺点：没有接口，不能继承，与单一职责原则冲突，一个类应该只关心内部逻辑，而不关心外面怎么样来实例化。
     */


     public static void main(String[] args) {

         // SingletondemoOne singletondemoOne = SingletondemoOne.getInstance();
         // SingletondemoTwo singletondemoTwo = SingletondemoTwo.getInstance();
         // SingletondemoThree singletondemoTwo = SingletondemoThree.getInstance();
         // SingletondemoFive singletondemoFive = SingletondemoFive.getInstance();
         // SingletondemoFive singletondemoFive1 = SingletondemoFive.getInstance();
         SingletondemoFour singletondemoFour = SingletondemoFour.getInstance();


     }





}
